package com.southwind.springboottest.studykotlin.s1

/**
 *@description：TODO
 *@author： HXG
 *@create： 2023/12/19 17:00
 * 1. 变量声明：
 * 在 Kotlin 中，使用 val 和 var 关键字来声明变量，分别用于不可变（只读）和可变的变量。
 * val： 用于声明只读变量，类似于 Java 的 final。
 *
 * kotlin
 * Copy code
 * val pi = 3.14
 * var： 用于声明可变变量。
 *
 * kotlin
 * Copy code
 * var count = 10
 *
 * 2. 类型推断：
 * Kotlin 具有类型推断，可以根据变量的初始值推断出变量的类型，因此通常不需要显式指定类型。
 *
 * kotlin
 * Copy code
 * val message = "Hello, Kotlin!" // 类型推断为 String
 * var number = 42 // 类型推断为 Int
 *
 * 3. 显式类型声明：
 * 虽然通常不需要显式指定类型，但有时为了更清晰或明确，你可以显式声明变量的类型。
 *
 * kotlin
 * Copy code
 * val name: String = "John"
 * var age: Int = 25
 *
 * 4. 空安全：
 * Kotlin 中引入了空安全的概念，变量默认不可为空，如果需要可为空，可以使用 ?。
 *
 * kotlin
 * Copy code
 * var nullableString: String? = null
 *
 * 5. 字符串模板：
 * Kotlin 支持字符串模板，允许在字符串中嵌入变量。
 *
 * kotlin
 * Copy code
 * val firstName = "John"
 * val lastName = "Doe"
 * val fullName = "$firstName $lastName"
 *
 * 6. 常量：
 * 使用 const val 关键字声明常量，这些常量在编译时就会被确定。
 *
 * kotlin
 * Copy code
 * const val MAX_COUNT = 100
 *
 * 7. 延迟初始化：
 * 对于可变变量，你可以使用 lateinit 关键字进行延迟初始化。
 *
 * kotlin
 * Copy code
 * lateinit var lateInitVariable: String
 *
 * 8. 集合和数组：
 * Kotlin 提供了丰富的集合和数组类型，你可以使用 List、Set、Map 等，以及数组来存储和操作数据。
 *
 * kotlin
 * Copy code
 * val numbers: List<Int> = listOf(1, 2, 3, 4, 5)
 * 这些是 Kotlin 中变量的一些基本用法。变量的性质和用法会根据 val 或 var 的选择、类型推断和其他特性而
 */
fun main() {

}

/**
 * 1. 变量声明
 * 在 Kotlin 中，使用 val 和 var 关键字来声明变量，分别用于不可变（只读）和可变的变量。val： 用于声明只读变量，类似于 Java 的 final。
 */
fun demo1(): Unit {
    //val： 用于声明只读变量，类似于 Java 的 final。
    val pi =  3.14
    //var： 用于声明可变变量。
    var count = 10
}

/**
 * 2. 类型推断
 * Kotlin 具有类型推断，可以根据变量的初始值推断出变量的类型，因此通常不需要显式指定类型。
 */
fun demo2(): Unit {
    val message = "Hello, Kotlin!" // 类型推断为 String
    var number = 42 // 类型推断为 Int
}

/**
 * 3. 显式类型声明
 * 虽然通常不需要显式指定类型，但有时为了更清晰或明确，你可以显式声明变量的类型。
 */
fun demo3(): Unit {
    val name : String = "John"
    var age : Int = 25
}